package UI;

import BLL.BookService;
import Entity.BCategory;
import Entity.Books;
import Utils.TSUtility;

import java.sql.Date;
import java.util.List;
import java.util.Scanner;

/**
 * @Author Chen
 * @Date 2022/1/6 17:38
 * @Version 1.0
 * 图书信息管理界面
 */
public class BooksUI {
    public static void main(String[] args) {
        ui();
    }
    public static void ui(){
        String bookName=null;
        String author=null;
        String press=null;
        int year=0;
        int mouth=0;
        int day=0;
        Date publicationDate=null;
        int printingTimes=0;
        double unitPrice=0.0;
        int bookTypeNumber=0;
        int bookNumber=0;
        List<BCategory> bc=null;
        int frequency=0;
        BookService bs=new BookService();
        Scanner sc=new Scanner(System.in);
        boolean option=true;
        while (option){
            System.out.println("************图书管理系统***********");
            System.out.println("1.图书信息添加");
            System.out.println("2.图书信息修改");
            System.out.println("3.图书信息全部查询");
            System.out.println("4.指定编号图书查询");
            System.out.println("5.指定图书名称查询");
            System.out.println("6.指定图书类型查询");
            System.out.println("7.图书信息删除");
            System.out.println("8.退出");
            System.out.println("请选择：");
            String number=sc.next();
            switch (number){
                case "1":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("************添加图书************");
                    System.out.println("请输入图书名称：");
                    bookName=sc.next();
                    System.out.println("请输入作者姓名：");
                    author=sc.next();
                    System.out.println("请输入出版社：");
                    press=sc.next();
                    System.out.println("请输入出版年份：");
                    year= TSUtility.readInt_year();
                    year=year-1900;
                    System.out.println("请输入出版月份：");
                    mouth=TSUtility.readInt_mouth();
                    mouth=mouth-1;
                    System.out.println("请输入出版日：");
                    day=TSUtility.readInt_day();
                    publicationDate=new Date(year,mouth,day);
                    System.out.println("请输入印刷次数：");
                    printingTimes=sc.nextInt();
                    System.out.println("请输入单价：");
                    unitPrice=sc.nextDouble();
                    bc = BookService.queryBookType();
                    System.out.println("图书类型编号    图书类型名称");
                    if (bc.size()==0){
                        System.out.println("无信息，请添加图书类型！");
                        break;
                    }
                    bc.forEach(System.out::println);
                    System.out.println("请选择图书类型：");
                    bookTypeNumber=sc.nextInt();
                    frequency = BookService.addBook(bookName, author, press, publicationDate, printingTimes, unitPrice, bookTypeNumber);
                    System.out.println(frequency+"条记录受到影响！");
                    System.out.println("************添加图书************");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "2":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("************修改图书************");
                    System.out.println("请输入图书ID：");
                    bookNumber=sc.nextInt();
                    Books books = BookService.selectBookById(bookNumber);
                    if (books==null){
                        System.out.println("没有"+bookNumber+"这编号的图书信息！");
                        break;
                    }
                    System.out.println("请输入图书名称"+books.getBookName()+"：");
                    bookName=TSUtility.readString(15,books.getBookName());
                    System.out.println("请输入作者姓名"+books.getAuthor()+"：");
                    author=TSUtility.readString(15,books.getAuthor());
                    System.out.println("请输入出版社"+books.getPress()+"：");
                    press=TSUtility.readString(15,books.getPress());
                    System.out.println("请输入出版年份"+books.getPublicationDate()+"：");
                    year= TSUtility.readInt_year();
                    year=year-1900;
                    System.out.println("请输入出版月份"+books.getPublicationDate()+"：");
                    mouth=TSUtility.readInt_mouth();
                    mouth=mouth-1;
                    System.out.println("请输入出版日"+books.getPublicationDate()+"：");
                    day=TSUtility.readInt_day();
                    publicationDate=new Date(year,mouth,day);
                    System.out.println("请输入印刷次数"+books.getPrintingTimes()+"：");
                    printingTimes=Integer.parseInt(TSUtility.readString(10,String.valueOf(books.getPrintingTimes())));
                    System.out.println("请输入单价"+books.getUnitPrice()+"：");
                    unitPrice=(double) Integer.parseInt(TSUtility.readString(10,String.valueOf(books.getUnitPrice())));
                    bc = BookService.queryBookType();
                    System.out.println("图书类型编号    图书类型名称");
                    if (bc.size()==0){
                        System.out.println("无信息，请添加图书类型！");
                        break;
                    }
                    bc.forEach(System.out::println);
                    System.out.println("请选择图书类型"+books.getBookTypeNumber()+"：");
                    bookTypeNumber=Integer.parseInt(TSUtility.readString(10,String.valueOf(books.getBookTypeNumber())));
                    frequency= BookService.modifyBook(bookName, author, press, publicationDate, printingTimes, unitPrice, bookTypeNumber,bookNumber);
                    System.out.println(frequency+"条记录受到影响！");
                    System.out.println("************修改图书************");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "3":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("**********查询全部图书***********");
                    List<Books> books1 = BookService.selectBook();
                    System.out.println("图书编号   图书名称        作者      出版社        出版日期   印刷次数   单价   图书类型编号   图书借阅状态");
                    if (books1.size()==0){
                        System.out.println("没有图书信息！");
                        break;
                    }
                    books1.forEach(System.out::println);
                    System.out.println("**********查询全部图书***********");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "4":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("*********查询指定编号图书*********");
                    System.out.println("请输入图书编号：");
                    bookNumber=sc.nextInt();
                    Books br=BookService.selectBookById(bookNumber);
                    System.out.println("图书编号   图书名称        作者      出版社        出版日期   印刷次数   单价   图书类型编号   图书借阅状态");
                    if (br==null){
                        System.out.println("编号为"+bookNumber+"的图书信息不存在！");
                        break;
                    }
                    System.out.println(br);
                    System.out.println("*********查询指定编号图书*********");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "5":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("*********查询指定名称图书*********");
                    System.out.println("请输入图书名称：");
                    bookName=sc.next();
                    List<Books> books2 = BookService.selectBookName(bookName);
                    System.out.println("图书编号   图书名称        作者      出版社        出版日期   印刷次数   单价   图书类型编号   图书借阅状态");
                    if (books2.size()==0){
                        System.out.println("没有名为"+bookName+"的图书！");
                        break;
                    }
                    books2.forEach(System.out::println);
                    System.out.println("*********查询指定名称图书*********");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "6":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("*******查询指定图书类型的图书*******");
                    System.out.println("请输入图书类型编号：");
                    bookTypeNumber=sc.nextInt();
                    List<Books> books3 = BookService.selectBookType(bookTypeNumber);
                    System.out.println("图书编号   图书名称        作者      出版社        出版日期   印刷次数   单价   图书类型编号   图书借阅状态");
                    if (books3.size()==0){
                        System.out.println("没有类型为"+bookTypeNumber+"编号的图书！");
                        break;
                    }
                    books3.forEach(System.out::println);
                    System.out.println("*******查询指定图书类型的图书*******");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "7":
                    System.out.println("**********图书管理系统***********");
                    System.out.println("********删除指定编号图书**********");
                    System.out.println("请输入图书编号：");
                    bookNumber=sc.nextInt();
                    int i = BookService.deleteBook(bookNumber);
                    if (i==0){
                        System.out.println("没有编号为"+bookNumber+"的图书！");
                        break;
                    }
                    System.out.println(i+"条数据被删除！");
                    System.out.println("********删除指定编号图书**********");
                    System.out.println("**********图书管理系统***********");
                    break;
                case "8":option=false;break;
                default:
                    System.out.println("没有"+number+"这个选项！");break;
            }
        }
    }
}
